﻿using System.Linq;
using System.Text.RegularExpressions;

namespace 时钟壁纸应用.辅助类
{
    internal class 正则
    {
        /// <summary>
        /// 返回正则符合正则表达式，并且匹配后的子文本项
        /// </summary>
        /// <param name="一段文本">原文本</param>
        /// <param name="正则表达式">正则表达式</param>
        /// <param name="匹配">匹配索引</param>
        /// <param name="子匹配">子匹配索引</param>
        /// <returns>返回0为匹配空</returns>
        public string 正则子匹配文本(string 一段文本, string 正则表达式, int 匹配, int 子匹配)

        {

            Regex 匹配器 = new Regex(正则表达式);
            var 匹配集 = 匹配器.Matches(一段文本);
            if (匹配集.Count == 0)
            { return "Error"; }
            return 匹配集[匹配].Groups[子匹配 + 1].Value;

        }

        /// <summary>
        /// 返回正则表达式的文本子匹配数量
        /// </summary>
        /// <param name="一段文本">输入一段文本</param>
        /// <param name="正则表达式">输入一个正则表达式</param>
        /// <returns></returns>
        public int 正则子匹配数量(string 一段文本, string 正则表达式, int 匹配)

        {

            Regex 匹配器 = new Regex(正则表达式);
            var 匹配集 = 匹配器.Matches(一段文本);
            return 匹配集[匹配].Groups.Count;


        }


        /// <summary>
        /// 返回正则通过正则匹配的文本
        /// </summary>
        /// <param name="一段文本">输入一段文本</param>
        /// <param name="正则表达式">输入一个正则表达式</param>
        /// <param name="匹配索引">正则匹配索引</param>
        /// <returns></returns>
        public string 正则匹配文本(string 一段文本, string 正则表达式, int 匹配索引)

        {
            //正则创建
            var a = Regex.Matches(一段文本, 正则表达式);
            //表示获取第一个正则匹配索引
            return a[匹配索引].ToString();
        }


        /// <summary>
        /// 返回正则匹配的数量（次数）
        /// </summary>
        /// <param name="一段文本">输入一段文本</param>
        /// <param name="正则表达式">输入一个正则表达式</param>
        /// <returns></returns>
        public int 正则匹配数量(string 一段文本, string 正则表达式)

        {
            //正则创建
            var a = Regex.Matches(一段文本, 正则表达式);
            //正则匹配数量
            return a.Count;

        }
    }
}
